ОПИСАНИЕ¶
В данной
странице
представлен
список ioctl
вызовов
ядра Linux/i386
версии 1.3.27. Он
содержит 421
вызов из
</usr/include/{asm,linux}/*.h>.Для
каждого
вызова
указано
числовое
значение,
имя и
передаваемые
аргументы.
Тип
аргумента
const struct foo *
означает,
что
аргумент
для ядра
является
входным. struct foo
* означает,
что
аргумент
для ядра
является
выходным.
Если ядро
использует
аргумент
как
входной и
выходной,
то он
помечается
как // I-O.
Некоторые
ioctl вызовы
используют
больше
аргументов
или
возвращают
больше
значений,
чем одна
структура.
Такие
вызовы
отмечаются
как // MORE и
документируются
далее в
отдельном
параграфе.
Данный
список
очень
неполон.
Структура ioctl¶
Значения
команд ioctl
являются
32-битными
константами.
В принципе,
эти
константы
являются
полностью
случайными,
но
некоторые
люди
пытаются
увидеть в
них
определённую
закономерность.
В старом Linux,
в основном,
были
16-битные
константы,
в которых
последний
байт
является
серийным
номером, а
предшествующим
байт(ами)
указывался
драйвер.
Иногда
использовался
старший
номер
устройства:
0x03 для ioctl
вызовов HDIO_*, 0x06
для ioctl
вызовов LP*.
Иногда
использовались
одна или
несколько
букв ASCII.
Например,
TCGETS имеет
значение 0x00005401,
с буквой 0x54 = 'T',
указывающей
на драйвер
терминала
и CYGETTIMEOUT имеет
значение 0x00435906,
с буквами 0x43 0x59
= 'C' 'Y',
указывающими
на драйвер
cyclades.
Позже (0.98p5) в
номер была
встроена
дополнительная
информация.
Появилось 2
бита
направления
(00: нет, 01:
запись, 10:
чтение, 11:
чтение/запись),
за
которыми
следовали 14
бит
размера
(указывают
размер
аргумента),
за
которыми
следовали 8
бит типа
(собирающих
вызовы ioctl в
группы по
назначению
или общему
драйверу) и,
наконец, 8
бит
серийного
номера.
Макросы,
описывающие
эту
структуру,
расположены
в <asm/ioctl.h>, _IO(type,nr) и
{_IOR,_IOW,_IOWR}(type,nr,size). Они
используют
sizeof(size), так что
говорить о
размере
здесь
является
неправильным
— это
третий
параметр
типа
данных.
Заметим,
что биты
размера
очень
ненадёжны:
во многих
случаях
они
ошибочны
или потому
что
ошибочный
макрос
использует
sizeof(sizeof(struct)) или
потому что
таковы
унаследованные
значение.
Таким
образом, мы
видим, что
новая
структура
имеет
только
недостатки:
она не
помогает в
проверке, и
приводит к
различным
значениям
у разных
архитектур.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
Хорошие ioctl
вызовы
возвращают
0 при
успешном
выполнении
и -1 при
ошибке, а
любые
выходные
значения
сохраняются
в
аргументе.
Однако,
некоторые
ioctl вызовы
возвращают
выходное
значение.
Далее это
пока никак
не
отмечено.
//
Основная
таблица.
// <include/asm-i386/socket.h>
0x00008901 |
FIOSETOWN |
const int * |
0x00008902 |
SIOCSPGRP |
const int * |
0x00008903 |
FIOGETOWN |
int * |
0x00008904 |
SIOCGPGRP |
int * |
0x00008905 |
SIOCATMAR |
int * |
0x00008906 |
SIOCGSTAMP |
timeval * |
// <include/asm-i386/termios.h>
0x00005401 |
TCGETS |
struct termios * |
0x00005402 |
TCSETS |
const struct termios * |
0x00005403 |
TCSETSW |
const struct termios * |
0x00005404 |
TCSETSF |
const struct termios * |
0x00005405 |
TCGETA |
struct termio * |
0x00005406 |
TCSETA |
const struct termio * |
0x00005407 |
TCSETAW |
const struct termio * |
0x00005408 |
TCSETAF |
const struct termio * |
0x00005409 |
TCSBRK |
int |
0x0000540A |
TCXONC |
int |
0x0000540B |
TCFLSH |
int |
0x0000540C |
TIOCEXCL |
void |
0x0000540D |
TIOCNXCL |
void |
0x0000540E |
TIOCSCTTY |
int |
0x0000540F |
TIOCGPGRP |
pid_t * |
0x00005410 |
TIOCSPGRP |
const pid_t * |
0x00005411 |
TIOCOUTQ |
int * |
0x00005412 |
TIOCSTI |
const char * |
0x00005413 |
TIOCGWINSZ |
struct winsize * |
0x00005414 |
TIOCSWINSZ |
const struct winsize * |
0x00005415 |
TIOCMGET |
int * |
0x00005416 |
TIOCMBIS |
const int * |
0x00005417 |
TIOCMBIC |
const int * |
0x00005418 |
TIOCMSET |
const int * |
0x00005419 |
TIOCGSOFTCAR |
int * |
0x0000541A |
TIOCSSOFTCAR |
const int * |
0x0000541B |
FIONREAD |
int * |
0x0000541B |
TIOCINQ |
int * |
0x0000541C |
TIOCLINUX |
const char * |
// MORE |
0x0000541D |
TIOCCONS |
void |
0x0000541E |
TIOCGSERIAL |
struct serial_struct * |
0x0000541F |
TIOCSSERIAL |
const struct serial_struct * |
0x00005420 |
TIOCPKT |
const int * |
0x00005421 |
FIONBIO |
const int * |
0x00005422 |
TIOCNOTTY |
void |
0x00005423 |
TIOCSETD |
const int * |
0x00005424 |
TIOCGETD |
int * |
0x00005425 |
TCSBRKP |
int |
0x00005426 |
TIOCTTYGSTRUCT |
struct tty_struct * |
0x00005450 |
FIONCLEX |
void |
0x00005451 |
FIOCLEX |
void |
0x00005452 |
FIOASYNC |
const int * |
0x00005453 |
TIOCSERCONFIG |
void |
0x00005454 |
TIOCSERGWILD |
int * |
0x00005455 |
TIOCSERSWILD |
const int * |
0x00005456 |
TIOCGLCKTRMIOS |
struct termios * |
0x00005457 |
TIOCSLCKTRMIOS |
const struct termios * |
0x00005458 |
TIOCSERGSTRUCT |
struct async_struct * |
0x00005459 |
TIOCSERGETLSR |
int * |
0x0000545A |
TIOCSERGETMULTI |
struct serial_multiport_struct * |
0x0000545B |
TIOCSERSETMULTI |
const struct serial_multiport_struct * |
// <include/linux/ax25.h>
0x000089E0 |
SIOCAX25GETUID |
const struct sockaddr_ax25 * |
0x000089E1 |
SIOCAX25ADDUID |
const struct sockaddr_ax25 * |
0x000089E2 |
SIOCAX25DELUID |
const struct sockaddr_ax25 * |
0x000089E3 |
SIOCAX25NOUID |
const int * |
0x000089E4 |
SIOCAX25DIGCTL |
const int * |
0x000089E5 |
SIOCAX25GETPARMS |
struct ax25_parms_struct * |
// I-O |
0x000089E6 |
SIOCAX25SETPARMS |
const struct ax25_parms_struct * |
// <include/linux/cdk.h>
0x00007314 |
STL_BINTR |
void |
0x00007315 |
STL_BSTART |
void |
0x00007316 |
STL_BSTOP |
void |
0x00007317 |
STL_BRESET |
void |
// <include/linux/cdrom.h>
0x00005301 |
CDROMPAUSE |
void |
0x00005302 |
CDROMRESUME |
void |
0x00005303 |
CDROMPLAYMSF |
const struct cdrom_msf * |
0x00005304 |
CDROMPLAYTRKIND |
const struct cdrom_ti * |
0x00005305 |
CDROMREADTOCHDR |
struct cdrom_tochdr * |
0x00005306 |
CDROMREADTOCENTRY |
struct cdrom_tocentry * |
// I-O |
0x00005307 |
CDROMSTOP |
void |
0x00005308 |
CDROMSTART |
void |
0x00005309 |
CDROMEJECT |
void |
0x0000530A |
CDROMVOLCTRL |
const struct cdrom_volctrl * |
0x0000530B |
CDROMSUBCHNL |
struct cdrom_subchnl * |
// I-O |
0x0000530C |
CDROMREADMODE2 |
const struct cdrom_msf * |
// MORE |
0x0000530D |
CDROMREADMODE1 |
const struct cdrom_msf * |
// MORE |
0x0000530E |
CDROMREADAUDIO |
const struct cdrom_read_audio * |
// MORE |
0x0000530F |
CDROMEJECT_SW |
int |
0x00005310 |
CDROMMULTISESSION |
struct cdrom_multisession * |
// I-O |
0x00005311 |
CDROM_GET_UPC |
struct { char [8]; } * |
0x00005312 |
CDROMRESET |
void |
0x00005313 |
CDROMVOLREAD |
struct cdrom_volctrl * |
0x00005314 |
CDROMREADRAW |
const struct cdrom_msf * |
// MORE |
0x00005315 |
CDROMREADCOOKED |
const struct cdrom_msf * |
// MORE |
0x00005316 |
CDROMSEEK |
const struct cdrom_msf * |
// <include/linux/cm206.h>
0x00002000 |
CM206CTL_GET_STAT |
int |
0x00002001 |
CM206CTL_GET_LAST_STAT |
int |
// <include/linux/cyclades.h>
0x00435901 |
CYGETMON |
struct cyclades_monitor * |
0x00435902 |
CYGETTHRESH |
int * |
0x00435903 |
CYSETTHRESH |
int |
0x00435904 |
CYGETDEFTHRESH |
int * |
0x00435905 |
CYSETDEFTHRESH |
int |
0x00435906 |
CYGETTIMEOUT |
int * |
0x00435907 |
CYSETTIMEOUT |
int |
0x00435908 |
CYGETDEFTIMEOUT |
int * |
0x00435909 |
CYSETDEFTIMEOUT |
int |
// <include/linux/ext2_fs.h>
0x80046601 |
EXT2_IOC_GETFLAGS |
int * |
0x40046602 |
EXT2_IOC_SETFLAGS |
const int * |
0x80047601 |
EXT2_IOC_GETVERSION |
int * |
0x40047602 |
EXT2_IOC_SETVERSION |
const int * |
// <include/linux/fd.h>
0x00000000 |
FDCLRPRM |
void |
0x00000001 |
FDSETPRM |
const struct floppy_struct * |
0x00000002 |
FDDEFPRM |
const struct floppy_struct * |
0x00000003 |
FDGETPRM |
struct floppy_struct * |
0x00000004 |
FDMSGON |
void |
0x00000005 |
FDMSGOFF |
void |
0x00000006 |
FDFMTBEG |
void |
0x00000007 |
FDFMTTRK |
const struct format_descr * |
0x00000008 |
FDFMTEND |
void |
0x0000000A |
FDSETEMSGTRESH |
int |
0x0000000B |
FDFLUSH |
void |
0x0000000C |
FDSETMAXERRS |
const struct floppy_max_errors * |
0x0000000E |
FDGETMAXERRS |
struct floppy_max_errors * |
0x00000010 |
FDGETDRVTYP |
struct { char [16]; } * |
0x00000014 |
FDSETDRVPRM |
const struct floppy_drive_params * |
0x00000015 |
FDGETDRVPRM |
struct floppy_drive_params * |
0x00000016 |
FDGETDRVSTAT |
struct floppy_drive_struct * |
0x00000017 |
FDPOLLDRVSTAT |
struct floppy_drive_struct * |
0x00000018 |
FDRESET |
int |
0x00000019 |
FDGETFDCSTAT |
struct floppy_fdc_state * |
0x0000001B |
FDWERRORCLR |
void |
0x0000001C |
FDWERRORGET |
struct floppy_write_errors * |
0x0000001E |
FDRAWCMD |
struct floppy_raw_cmd * |
// MORE // I-O |
0x00000028 |
FDTWADDLE |
void |
// <include/linux/fs.h>
0x0000125D |
BLKROSET |
const int * |
0x0000125E |
BLKROGET |
int * |
0x0000125F |
BLKRRPART |
void |
0x00001260 |
BLKGETSIZE |
unsigned long * |
0x00001261 |
BLKFLSBUF |
void |
0x00001262 |
BLKRASET |
int |
0x00001263 |
BLKRAGET |
int * |
0x00000001 |
FIBMAP |
int * |
// I-O |
0x00000002 |
FIGETBSZ |
int * |
// <include/linux/hdreg.h>
0x00000301 |
HDIO_GETGEO |
struct hd_geometry * |
0x00000302 |
HDIO_GET_UNMASKINTR |
int * |
0x00000304 |
HDIO_GET_MULTCOUNT |
int * |
0x00000307 |
HDIO_GET_IDENTITY |
struct hd_driveid * |
0x00000308 |
HDIO_GET_KEEPSETTINGS |
int * |
0x00000309 |
HDIO_GET_CHIPSET |
int * |
0x0000030A |
HDIO_GET_NOWERR |
int * |
0x0000030B |
HDIO_GET_DMA |
int * |
0x0000031F |
HDIO_DRIVE_CMD |
int * |
// I-O |
0x00000321 |
HDIO_SET_MULTCOUNT |
int |
0x00000322 |
HDIO_SET_UNMASKINTR |
int |
0x00000323 |
HDIO_SET_KEEPSETTINGS |
int |
0x00000324 |
HDIO_SET_CHIPSET |
int |
0x00000325 |
HDIO_SET_NOWERR |
int |
0x00000326 |
HDIO_SET_DMA |
int |
// <include/linux/if_eql.h>
0x000089F0 |
EQL_ENSLAVE |
struct ifreq * |
// MORE // I-O |
0x000089F1 |
EQL_EMANCIPATE |
struct ifreq * |
// MORE // I-O |
0x000089F2 |
EQL_GETSLAVECFG |
struct ifreq * |
// MORE // I-O |
0x000089F3 |
EQL_SETSLAVECFG |
struct ifreq * |
// MORE // I-O |
0x000089F4 |
EQL_GETMASTRCFG |
struct ifreq * |
// MORE // I-O |
0x000089F5 |
EQL_SETMASTRCFG |
struct ifreq * |
// MORE // I-O |
// <include/linux/if_plip.h>
0x000089F0 |
SIOCDEVPLIP |
struct ifreq * |
// I-O |
// <include/linux/if_ppp.h>
0x00005490 |
PPPIOCGFLAGS |
int * |
0x00005491 |
PPPIOCSFLAGS |
const int * |
0x00005492 |
PPPIOCGASYNCMAP |
int * |
0x00005493 |
PPPIOCSASYNCMAP |
const int * |
0x00005494 |
PPPIOCGUNIT |
int * |
0x00005495 |
PPPIOCSINPSIG |
const int * |
0x00005497 |
PPPIOCSDEBUG |
const int * |
0x00005498 |
PPPIOCGDEBUG |
int * |
0x00005499 |
PPPIOCGSTAT |
struct ppp_stats * |
0x0000549A |
PPPIOCGTIME |
struct ppp_ddinfo * |
0x0000549B |
PPPIOCGXASYNCMAP |
struct { int [8]; } * |
0x0000549C |
PPPIOCSXASYNCMAP |
const struct { int [8]; } * |
0x0000549D |
PPPIOCSMRU |
const int * |
0x0000549E |
PPPIOCRASYNCMAP |
const int * |
0x0000549F |
PPPIOCSMAXCID |
const int * |
// <include/linux/ipx.h>
0x000089E0 |
SIOCAIPXITFCRT |
const char * |
0x000089E1 |
SIOCAIPXPRISLT |
const char * |
0x000089E2 |
SIOCIPXCFGDATA |
struct ipx_config_data * |
// <include/linux/kd.h>
0x00004B60 |
GIO_FONT |
struct { char [8192]; } * |
0x00004B61 |
PIO_FONT |
const struct { char [8192]; } * |
0x00004B6B |
GIO_FONTX |
struct console_font_desc * |
// MORE // I-O |
0x00004B6C |
PIO_FONTX |
const struct console_font_desc * |
//MORE |
0x00004B70 |
GIO_CMAP |
struct { char [48]; } * |
0x00004B71 |
PIO_CMAP |
const struct { char [48]; } |
0x00004B2F |
KIOCSOUND |
int |
0x00004B30 |
KDMKTONE |
int |
0x00004B31 |
KDGETLED |
char * |
0x00004B32 |
KDSETLED |
int |
0x00004B33 |
KDGKBTYPE |
char * |
0x00004B34 |
KDADDIO |
int |
// MORE |
0x00004B35 |
KDDELIO |
int |
// MORE |
0x00004B36 |
KDENABIO |
void |
// MORE |
0x00004B37 |
KDDISABIO |
void |
// MORE |
0x00004B3A |
KDSETMODE |
int |
0x00004B3B |
KDGETMODE |
int * |
0x00004B3C |
KDMAPDISP |
void |
// MORE |
0x00004B3D |
KDUNMAPDISP |
void |
// MORE |
0x00004B40 |
GIO_SCRNMAP |
struct { char [E_TABSZ]; } * |
0x00004B41 |
PIO_SCRNMAP |
const struct { char [E_TABSZ]; } * |
0x00004B69 |
GIO_UNISCRNMAP |
struct { short [E_TABSZ]; } * |
0x00004B6A |
PIO_UNISCRNMAP |
const struct { short [E_TABSZ]; } * |
0x00004B66 |
GIO_UNIMAP |
struct unimapdesc * |
// MORE // I-O |
0x00004B67 |
PIO_UNIMAP |
const struct unimapdesc * |
// MORE |
0x00004B68 |
PIO_UNIMAPCLR |
const struct unimapinit * |
0x00004B44 |
KDGKBMODE |
int * |
0x00004B45 |
KDSKBMODE |
int |
0x00004B62 |
KDGKBMETA |
int * |
0x00004B63 |
KDSKBMETA |
int |
0x00004B64 |
KDGKBLED |
int * |
0x00004B65 |
KDSKBLED |
int |
0x00004B46 |
KDGKBENT |
struct kbentry * |
// I-O |
0x00004B47 |
KDSKBENT |
const struct kbentry * |
0x00004B48 |
KDGKBSENT |
struct kbsentry * |
// I-O |
0x00004B49 |
KDSKBSENT |
const struct kbsentry * |
0x00004B4A |
KDGKBDIACR |
struct kbdiacrs * |
0x00004B4B |
KDSKBDIACR |
const struct kbdiacrs * |
0x00004B4C |
KDGETKEYCODE |
struct kbkeycode * |
// I-O |
0x00004B4D |
KDSETKEYCODE |
const struct kbkeycode * |
0x00004B4E |
KDSIGACCEPT |
int |
// <include/linux/lp.h>
0x00000601 |
LPCHAR |
int |
0x00000602 |
LPTIME |
int |
0x00000604 |
LPABORT |
int |
0x00000605 |
LPSETIRQ |
int |
0x00000606 |
LPGETIRQ |
int * |
0x00000608 |
LPWAIT |
int |
0x00000609 |
LPCAREFUL |
int |
0x0000060A |
LPABORTOPEN |
int |
0x0000060B |
LPGETSTATUS |
int * |
0x0000060C |
LPRESET |
void |
0x0000060D |
LPGETSTATS |
struct lp_stats * |
// <include/linux/mroute.h>
0x000089E0 |
SIOCGETVIFCNT |
struct sioc_vif_req * |
// I-O |
0x000089E1 |
SIOCGETSGCNT |
struct sioc_sg_req * |
// I-O |
// <include/linux/mtio.h>
0x40086D01 |
MTIOCTOP |
const struct mtop * |
0x801C6D02 |
MTIOCGET |
struct mtget * |
0x80046D03 |
MTIOCPOS |
struct mtpos * |
0x80206D04 |
MTIOCGETCONFIG |
struct mtconfiginfo * |
0x40206D05 |
MTIOCSETCONFIG |
const struct mtconfiginfo * |
// <include/linux/netrom.h>
0x000089E0 |
SIOCNRGETPARMS |
struct nr_parms_struct * |
// I-O |
0x000089E1 |
SIOCNRSETPARMS |
const struct nr_parms_struct * |
0x000089E2 |
SIOCNRDECOBS |
void |
0x000089E3 |
SIOCNRRTCTL |
const int * |
// <include/linux/sbpcd.h>
0x00009000 |
DDIOCSDBG |
const int * |
0x00005382 |
CDROMAUDIOBUFSIZ |
int |
// <include/linux/scc.h>
0x00005470 |
TIOCSCCINI |
void |
0x00005471 |
TIOCCHANINI |
const struct scc_modem * |
0x00005472 |
TIOCGKISS |
struct ioctl_command * |
// I-O |
0x00005473 |
TIOCSKISS |
const struct ioctl_command * |
0x00005474 |
TIOCSCCSTAT |
struct scc_stat * |
// <include/linux/scsi.h>
0x00005382 |
SCSI_IOCTL_GET_IDLUN |
struct { int [2]; } * |
0x00005383 |
SCSI_IOCTL_TAGGED_ENABLE |
void |
0x00005384 |
SCSI_IOCTL_TAGGED_DISABLE |
void |
0x00005385 |
SCSI_IOCTL_PROBE_HOST |
const int * |
// MORE |
// <include/linux/smb_fs.h>
0x80027501 |
SMB_IOC_GETMOUNTUID |
uid_t * |
// <include/linux/sockios.h>
0x0000890B |
SIOCADDRT |
const struct rtentry * |
// MORE |
0x0000890C |
SIOCDELRT |
const struct rtentry * |
// MORE |
0x00008910 |
SIOCGIFNAME |
char [] |
0x00008911 |
SIOCSIFLINK |
void |
0x00008912 |
SIOCGIFCONF |
struct ifconf * |
// MORE // I-O |
0x00008913 |
SIOCGIFFLAGS |
struct ifreq * |
// I-O |
0x00008914 |
SIOCSIFFLAGS |
const struct ifreq * |
0x00008915 |
SIOCGIFADDR |
struct ifreq * |
// I-O |
0x00008916 |
SIOCSIFADDR |
const struct ifreq * |
0x00008917 |
SIOCGIFDSTADDR |
struct ifreq * |
// I-O |
0x00008918 |
SIOCSIFDSTADDR |
const struct ifreq * |
0x00008919 |
SIOCGIFBRDADDR |
struct ifreq * |
// I-O |
0x0000891A |
SIOCSIFBRDADDR |
const struct ifreq * |
0x0000891B |
SIOCGIFNETMASK |
struct ifreq * |
// I-O |
0x0000891C |
SIOCSIFNETMASK |
const struct ifreq * |
0x0000891D |
SIOCGIFMETRIC |
struct ifreq * |
// I-O |
0x0000891E |
SIOCSIFMETRIC |
const struct ifreq * |
0x0000891F |
SIOCGIFMEM |
struct ifreq * |
// I-O |
0x00008920 |
SIOCSIFMEM |
const struct ifreq * |
0x00008921 |
SIOCGIFMTU |
struct ifreq * |
// I-O |
0x00008922 |
SIOCSIFMTU |
const struct ifreq * |
0x00008923 |
OLD_SIOCGIFHWADDR |
struct ifreq * |
// I-O |
0x00008924 |
SIOCSIFHWADDR |
const struct ifreq * |
// MORE |
0x00008925 |
SIOCGIFENCAP |
int * |
0x00008926 |
SIOCSIFENCAP |
const int * |
0x00008927 |
SIOCGIFHWADDR |
struct ifreq * |
// I-O |
0x00008929 |
SIOCGIFSLAVE |
void |
0x00008930 |
SIOCSIFSLAVE |
void |
0x00008931 |
SIOCADDMULTI |
const struct ifreq * |
0x00008932 |
SIOCDELMULTI |
const struct ifreq * |
0x00008940 |
SIOCADDRTOLD |
void |
0x00008941 |
SIOCDELRTOLD |
void |
0x00008950 |
SIOCDARP |
const struct arpreq * |
0x00008951 |
SIOCGARP |
struct arpreq * |
// I-O |
0x00008952 |
SIOCSARP |
const struct arpreq * |
0x00008960 |
SIOCDRARP |
const struct arpreq * |
0x00008961 |
SIOCGRARP |
struct arpreq * |
// I-O |
0x00008962 |
SIOCSRARP |
const struct arpreq * |
0x00008970 |
SIOCGIFMAP |
struct ifreq * |
// I-O |
0x00008971 |
SIOCSIFMAP |
const struct ifreq * |
// <include/linux/soundcard.h>
0x00005100 |
SNDCTL_SEQ_RESET |
void |
0x00005101 |
SNDCTL_SEQ_SYNC |
void |
0xC08C5102 |
SNDCTL_SYNTH_INFO |
struct synth_info * |
// I-O |
0xC0045103 |
SNDCTL_SEQ_CTRLRATE |
int * |
// I-O |
0x80045104 |
SNDCTL_SEQ_GETOUTCOUNT |
int * |
0x80045105 |
SNDCTL_SEQ_GETINCOUNT |
int * |
0x40045106 |
SNDCTL_SEQ_PERCMODE |
void |
0x40285107 |
SNDCTL_FM_LOAD_INSTR |
const struct sbi_instrument * |
0x40045108 |
SNDCTL_SEQ_TESTMIDI |
const int * |
0x40045109 |
SNDCTL_SEQ_RESETSAMPLES |
const int * |
0x8004510A |
SNDCTL_SEQ_NRSYNTHS |
int * |
0x8004510B |
SNDCTL_SEQ_NRMIDIS |
int * |
0xC074510C |
SNDCTL_MIDI_INFO |
struct midi_info * |
// I-O |
0x4004510D |
SNDCTL_SEQ_THRESHOLD |
const int * |
0xC004510E |
SNDCTL_SYNTH_MEMAVL |
int * |
// I-O |
0x4004510F |
SNDCTL_FM_4OP_ENABLE |
const int * |
0xCFB85110 |
SNDCTL_PMGR_ACCESS |
struct patmgr_info * |
// I-O |
0x00005111 |
SNDCTL_SEQ_PANIC |
void |
0x40085112 |
SNDCTL_SEQ_OUTOFBAND |
const struct seq_event_rec * |
0xC0045401 |
SNDCTL_TMR_TIMEBASE |
int * |
// I-O |
0x00005402 |
SNDCTL_TMR_START |
void |
0x00005403 |
SNDCTL_TMR_STOP |
void |
0x00005404 |
SNDCTL_TMR_CONTINUE |
void |
0xC0045405 |
SNDCTL_TMR_TEMPO |
int * |
// I-O |
0xC0045406 |
SNDCTL_TMR_SOURCE |
int * |
// I-O |
0x40045407 |
SNDCTL_TMR_METRONOME |
const int * |
0x40045408 |
SNDCTL_TMR_SELECT |
int * |
// I-O |
0xCFB85001 |
SNDCTL_PMGR_IFACE |
struct patmgr_info * |
// I-O |
0xC0046D00 |
SNDCTL_MIDI_PRETIME |
int * |
// I-O |
0xC0046D01 |
SNDCTL_MIDI_MPUMODE |
const int * |
0xC0216D02 |
SNDCTL_MIDI_MPUCMD |
struct mpu_command_rec * |
// I-O |
0x00005000 |
SNDCTL_DSP_RESET |
void |
0x00005001 |
SNDCTL_DSP_SYNC |
void |
0xC0045002 |
SNDCTL_DSP_SPEED |
int * |
// I-O |
0xC0045003 |
SNDCTL_DSP_STEREO |
int * |
// I-O |
0xC0045004 |
SNDCTL_DSP_GETBLKSIZE |
int * |
// I-O |
0xC0045006 |
SOUND_PCM_WRITE_CHANNELS |
int * |
// I-O |
0xC0045007 |
SOUND_PCM_WRITE_FILTER |
int * |
// I-O |
0x00005008 |
SNDCTL_DSP_POST |
void |
0xC0045009 |
SNDCTL_DSP_SUBDIVIDE |
int * |
// I-O |
0xC004500A |
SNDCTL_DSP_SETFRAGMENT |
int * |
// I-O |
0x8004500B |
SNDCTL_DSP_GETFMTS |
int * |
0xC0045005 |
SNDCTL_DSP_SETFMT |
int * |
// I-O |
0x800C500C |
SNDCTL_DSP_GETOSPACE |
struct audio_buf_info * |
0x800C500D |
SNDCTL_DSP_GETISPACE |
struct audio_buf_info * |
0x0000500E |
SNDCTL_DSP_NONBLOCK |
void |
0x80045002 |
SOUND_PCM_READ_RATE |
int * |
0x80045006 |
SOUND_PCM_READ_CHANNELS |
int * |
0x80045005 |
SOUND_PCM_READ_BITS |
int * |
0x80045007 |
SOUND_PCM_READ_FILTER |
int * |
0x00004300 |
SNDCTL_COPR_RESET |
void |
0xCFB04301 |
SNDCTL_COPR_LOAD |
const struct copr_buffer * |
0xC0144302 |
SNDCTL_COPR_RDATA |
struct copr_debug_buf * |
// I-O |
0xC0144303 |
SNDCTL_COPR_RCODE |
struct copr_debug_buf * |
// I-O |
0x40144304 |
SNDCTL_COPR_WDATA |
const struct copr_debug_buf * |
0x40144305 |
SNDCTL_COPR_WCODE |
const struct copr_debug_buf * |
0xC0144306 |
SNDCTL_COPR_RUN |
struct copr_debug_buf * |
// I-O |
0xC0144307 |
SNDCTL_COPR_HALT |
struct copr_debug_buf * |
// I-O |
0x4FA44308 |
SNDCTL_COPR_SENDMSG |
const struct copr_msg * |
0x8FA44309 |
SNDCTL_COPR_RCVMSG |
struct copr_msg * |
0x80044D00 |
SOUND_MIXER_READ_VOLUME |
int * |
0x80044D01 |
SOUND_MIXER_READ_BASS |
int * |
0x80044D02 |
SOUND_MIXER_READ_TREBLE |
int * |
0x80044D03 |
SOUND_MIXER_READ_SYNTH |
int * |
0x80044D04 |
SOUND_MIXER_READ_PCM |
int * |
0x80044D05 |
SOUND_MIXER_READ_SPEAKER |
int * |
0x80044D06 |
SOUND_MIXER_READ_LINE |
int * |
0x80044D07 |
SOUND_MIXER_READ_MIC |
int * |
0x80044D08 |
SOUND_MIXER_READ_CD |
int * |
0x80044D09 |
SOUND_MIXER_READ_IMIX |
int * |
0x80044D0A |
SOUND_MIXER_READ_ALTPCM |
int * |
0x80044D0B |
SOUND_MIXER_READ_RECLEV |
int * |
0x80044D0C |
SOUND_MIXER_READ_IGAIN |
int * |
0x80044D0D |
SOUND_MIXER_READ_OGAIN |
int * |
0x80044D0E |
SOUND_MIXER_READ_LINE1 |
int * |
0x80044D0F |
SOUND_MIXER_READ_LINE2 |
int * |
0x80044D10 |
SOUND_MIXER_READ_LINE3 |
int * |
0x80044D1C |
SOUND_MIXER_READ_MUTE |
int * |
0x80044D1D |
SOUND_MIXER_READ_ENHANCE |
int * |
0x80044D1E |
SOUND_MIXER_READ_LOUD |
int * |
0x80044DFF |
SOUND_MIXER_READ_RECSRC |
int * |
0x80044DFE |
SOUND_MIXER_READ_DEVMASK |
int * |
0x80044DFD |
SOUND_MIXER_READ_RECMASK |
int * |
0x80044DFB |
SOUND_MIXER_READ_STEREODEVS |
int * |
0x80044DFC |
SOUND_MIXER_READ_CAPS |
int * |
0xC0044D00 |
SOUND_MIXER_WRITE_VOLUME |
int * |
// I-O |
0xC0044D01 |
SOUND_MIXER_WRITE_BASS |
int * |
// I-O |
0xC0044D02 |
SOUND_MIXER_WRITE_TREBLE |
int * |
// I-O |
0xC0044D03 |
SOUND_MIXER_WRITE_SYNTH |
int * |
// I-O |
0xC0044D04 |
SOUND_MIXER_WRITE_PCM |
int * |
// I-O |
0xC0044D05 |
SOUND_MIXER_WRITE_SPEAKER |
int * |
// I-O |
0xC0044D06 |
SOUND_MIXER_WRITE_LINE |
int * |
// I-O |
0xC0044D07 |
SOUND_MIXER_WRITE_MIC |
int * |
// I-O |
0xC0044D08 |
SOUND_MIXER_WRITE_CD |
int * |
// I-O |
0xC0044D09 |
SOUND_MIXER_WRITE_IMIX |
int * |
// I-O |
0xC0044D0A |
SOUND_MIXER_WRITE_ALTPCM |
int * |
// I-O |
0xC0044D0B |
SOUND_MIXER_WRITE_RECLEV |
int * |
// I-O |
0xC0044D0C |
SOUND_MIXER_WRITE_IGAIN |
int * |
// I-O |
0xC0044D0D |
SOUND_MIXER_WRITE_OGAIN |
int * |
// I-O |
0xC0044D0E |
SOUND_MIXER_WRITE_LINE1 |
int * |
// I-O |
0xC0044D0F |
SOUND_MIXER_WRITE_LINE2 |
int * |
// I-O |
0xC0044D10 |
SOUND_MIXER_WRITE_LINE3 |
int * |
// I-O |
0xC0044D1C |
SOUND_MIXER_WRITE_MUTE |
int * |
// I-O |
0xC0044D1D |
SOUND_MIXER_WRITE_ENHANCE |
int * |
// I-O |
0xC0044D1E |
SOUND_MIXER_WRITE_LOUD |
int * |
// I-O |
0xC0044DFF |
SOUND_MIXER_WRITE_RECSRC |
int * |
// I-O |
// <include/linux/umsdos_fs.h>
0x000004D2 |
UMSDOS_READDIR_DOS |
struct umsdos_ioctl * |
// I-O |
0x000004D3 |
UMSDOS_UNLINK_DOS |
const struct umsdos_ioctl * |
0x000004D4 |
UMSDOS_RMDIR_DOS |
const struct umsdos_ioctl * |
0x000004D5 |
UMSDOS_STAT_DOS |
struct umsdos_ioctl * |
// I-O |
0x000004D6 |
UMSDOS_CREAT_EMD |
const struct umsdos_ioctl * |
0x000004D7 |
UMSDOS_UNLINK_EMD |
const struct umsdos_ioctl * |
0x000004D8 |
UMSDOS_READDIR_EMD |
struct umsdos_ioctl * |
// I-O |
0x000004D9 |
UMSDOS_GETVERSION |
struct umsdos_ioctl * |
0x000004DA |
UMSDOS_INIT_EMD |
void |
0x000004DB |
UMSDOS_DOS_SETUP |
const struct umsdos_ioctl * |
0x000004DC |
UMSDOS_RENAME_DOS |
const struct umsdos_ioctl * |
// <include/linux/vt.h>
0x00005600 |
VT_OPENQRY |
int * |
0x00005601 |
VT_GETMODE |
struct vt_mode * |
0x00005602 |
VT_SETMODE |
const struct vt_mode * |
0x00005603 |
VT_GETSTATE |
struct vt_stat * |
0x00005604 |
VT_SENDSIG |
void |
0x00005605 |
VT_RELDISP |
int |
0x00005606 |
VT_ACTIVATE |
int |
0x00005607 |
VT_WAITACTIVE |
int |
0x00005608 |
VT_DISALLOCATE |
int |
0x00005609 |
VT_RESIZE |
const struct vt_sizes * |
0x0000560A |
VT_RESIZEX |
const struct vt_consize * |
//
Дополнительные
аргументы
(MORE).
Некоторые
ioctl вызовы в
качестве
аргумента
ожидают
указатель
на
структуру,
которая
содержит
дополнительные
указатели.
Такие
вызовы
описаны
здесь в
алфавитном
порядке.
CDROMREADAUDIO берёт
входной
указатель
const struct cdrom_read_audio *.
Поле buf
указывает
на
выходной
буфер
длиной nframes *
CD_FRAMESIZE_RAW.
CDROMREADCOOKED, CDROMREADMODE1,
CDROMREADMODE2 и CDROMREADRAW
берут
входной
указатель
const struct cdrom_msf *. Они
используют
такой же
указатель
в качестве
выходного
указателя
на char []. Длина
определяется
запросом.
Для CDROMREADMODE1
большинство
драйверов
использует
CD_FRAMESIZE, но
драйвер Optics Storage
использует
OPT_BLOCKSIZE (оба
имеют
числовое
значение 2048).
CDROMREADCOOKED char [CD_FRAMESIZE]
CDROMREADMODE1 char [CD_FRAMESIZE или OPT_BLOCKSIZE]
CDROMREADMODE2 char [CD_FRAMESIZE_RAW0]
CDROMREADRAW char [CD_FRAMESIZE_RAW]
EQL_ENSLAVE, EQL_EMANCIPATE, EQL_GETSLAVECFG,
EQL_SETSLAVECFG, EQL_GETMASTERCFG и
EQL_SETMASTERCFG берут struct
ifreq *. Поле ifr_data
является
указателем
на другую
структуру:
EQL_ENSLAVE const struct slaving_request *
EQL_EMANCIPATE const struct slaving_request *
EQL_GETSLAVECFG struct slave_config * // I-O
EQL_SETSLAVECFG const struct slave_config *
EQL_GETMASTERCFG struct master_config *
EQL_SETMASTERCFG const struct master_config *
FDRAWCMD берёт struct floppy
raw_cmd *. Если flags &
FD_RAW_WRITE не ноль,
то data
указывает
на входной
буфер
длиной length.
Если flags & FD_RAW_READ
не ноль, то
data
указывает
на
выходной
буфер
длиной length.
GIO_FONTX и PIO_FONTX
берут struct console_font_desc *
или const struct console_font_desc *,
соответственно.
chardata
указывает
на буфер char
[charcount]. Это
выходной
буфер для
GIO_FONTX и
входной
буфер для
PIO_FONTX.
GIO_UNIMAP и PIO_UNIMAP
берут struct unimapdesc *
или const struct unimapdesc *,
соответственно.
entries
указывает
на буфер struct
unipair [entry_ct]. Это
выходной
буфер для
GIO_UNIMAP и
входной
буфер для
PIO_UNIMAP.
KDADDIO, KDDELIO, KDDISABIO и KDENABIO
разрешают
или
запрещают
доступ к
портам
ввода/вывода.
Они
являются
необходимыми
альтернативными
интерфейсами
к 'ioperm'.
KDMAPDISP и KDUNMAPDISP
разрешают
или
запрещают
отображение
памяти или
доступ к
порту
ввода/вывода.
Они не
реализованы
в ядре.
SCSI_IOCTL_PROBE_HOST
берёт
входной
указатель
const int *, который
является
длиной. Он
использует
такой же
указатель
как
выходной
указатель
на буфер char []
этой
длины.
SIOCADDRT и SIOCDELRT
берут
входной
указатель,
чей тип
зависит от
протокола:
большинство протоколов const struct rtentry *
AX.25 const struct ax25_route *
NET/ROM const struct nr_route_struct *
SIOCGIFCONF берёт struct ifconf
*. Поле ifc_buf
указывает
на буфер
длиной ifc_len
байт, в
который
ядро пишет
список
типов type struct ifreq [].
SIOCSIFHWADDR берёт
входной
указатель,
чей тип
зависит от
протокола:
большинство протоколов const struct ifreq *
AX.25 const char [AX25_ADDR_LEN]
TIOCLINUX берёт const char *.
Он
использует
его для
того, чтобы
разделить
некоторые
независимые
подоперации.
В таблице
ниже, N + foo
означает foo
после N
начальных
байт. struct selection
неявно
определена
в drivers/char/selection.c
TIOCLINUX-2 1 + const struct selection *
TIOCLINUX-3 void
TIOCLINUX-4 void
TIOCLINUX-5 4 + const struct { long [8]; } *
TIOCLINUX-6 char *
TIOCLINUX-7 char *
TIOCLINUX-10 1 + const char *
//
Дублирующие
вызовы ioctls
Этот
список не
включает ioctl
вызовы в
диапазоне
SIOCDEVPRIVATE и SIOCPROTOPRIVATE.
0x00000001 |
FDSETPRM |
FIBMAP |
0x00000002 |
FDDEFPRM |
FIGETBSZ |
0x00005382 |
CDROMAUDIOBUFSIZ |
SCSI_IOCTL_GET_IDLUN |
0x00005402 |
SNDCTL_TMR_START |
TCSETS |
0x00005403 |
SNDCTL_TMR_STOP |
TCSETSW |
0x00005404 |
SNDCTL_TMR_CONTINUE |
TCSETSF |